https://t.me/RX1948
Server : LiteSpeed
System : Linux host 5.15.0-161-generic #171-Ubuntu SMP Sat Oct 11 08:17:01 UTC 2025 x86_64
User : idnco5810 ( 1093)
PHP Version : 8.2.29
Disable Function : NONE
Directory :  /lib/python3/dist-packages/cloudinit/net/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/cloudinit/net/__pycache__/networkd.cpython-310.pyc
o

쑛h�T�@s�ddlZddlmZmZmZmZddlmZmZddl	m
Z
mZddlm
Z
e�e�Zdeeeefdeeeeffdd	�Zdedefd
d�ZGdd
�d
�ZGdd�de
j�Zddd�ZdS)�N)�Any�Dict�List�Optional)�subp�util)�renderer�should_add_gateway_onlink_flag)�NetworkState�data�returncCs&i}|��D]
\}}t|�||<q|S)z�
    Normalize a dictionary of lists.
    - Assumes top-level keys map to lists.
    - Each list and any nested dicts/lists will be recursively normalized.
    )�items�_normalize_value)r�
normalized�key�value�r�8/usr/lib/python3/dist-packages/cloudinit/net/networkd.py�	normalizesrcCs�t|t�ri}t|�D]
}t||�||<q|St|t�rHg}|D]}t|ttf�r/t|�}n|}|�|�q!zt|�WStyG|YSw|S)z�
    Recursively normalize a dictionary or list:
    - Dicts: keys sorted, values normalized
    - Lists: items normalized and sorted (if comparable)
    )�
isinstance�dict�sortedr�list�append�	TypeError)rrr�normalized_items�item�normalized_itemrrrrs$



�rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�	CfgParsercCs ggggggigggd�
|_dS)N)
�Match�Link�Network�DHCPv4�DHCPv6�Address�Route�NetDev�VLAN�Bond)�	conf_dict)�selfrrr�__init__9s�zCfgParser.__init__cCs^|j��D]'}||kr,|j|�|�d|���tt�|j|��|j|<|j|��qdS)N�=�r)�keysrrr�fromkeys�sort)r*�secr�val�krrr�update_sectionGs��zCfgParser.update_sectioncCs�|j��D]=}||krB||j|vrg|j||<|j||�|�d|���tt�|j||��|j||<|j||��qdS)z�
        For each route section we use rid as a key, this allows us to isolate
        this route from others on subsequent calls.
        r,Nr-)r*r1�ridrr2r3rrr�update_route_sectionNs���zCfgParser.update_route_sectioncCs�d}t|j�|_t|j���D]`\}}|sq|dkr-t|�D]
}|d|�d|�d�7}qq|dkrUt|�D]}|d|�d�7}t||�D]	}||�d�7}qE|d7}q5q|d|�d�7}t|�D]	}||�d�7}qa|d7}q|S)N�r$�[z]
�

r%�
)rr)rr
)r*�contentsr3�v�e�nrrr�get_final_conf^s*�
�
zCfgParser.get_final_confN)�__name__�
__module__�__qualname__r+r4r6r?rrrrr8s
rc@s�eZdZdZd#dd�Zdefdd�Zdefdd	�Zdefd
d�Zdefdd
�Z	defdd�Z
dedefdd�Zdefdd�Z
d$dd�Z		d%dedeeddfdd�Zdefdd�Zdedefdd �Zdedefd!d"�ZdS)&�Rendererz�
    Renders network information in /etc/systemd/network

    This Renderer is currently experimental and doesn't support all the
    use cases supported by the other renderers yet.
    NcCs(|si}|�dd�|_|�dd�|_dS)N�resolve_conf_fnz/etc/systemd/resolved.conf�network_conf_dirz/etc/systemd/network/)�getrDrE)r*�configrrrr+�s�
�zRenderer.__init__�cfgcCsfd}ddd�}|ddkrd|d<|sdS|��D]\}}||vr.||r.|�||||�q|d	S)
Nr�Name�Driver)�name�driver�type�physical�
MACAddress�mac_addressrK)r
r4)r*�ifacerHr1�
match_dictr3r<rrr�generate_match_section�s��zRenderer.generate_match_sectioncCszd}|sdS|�d�r|�|d|d�|ddkr(|�d�r(|�|d|d�d|vr9|dr;|�|d	d
�dSdSdS)Nr �mtu�MTUBytesrMrNrPrO�optional�RequiredForOnline�no)rFr4)r*rQrHr1rrr�generate_link_section�s
�zRenderer.generate_link_sectionc	Csnd}dddd�}d}d|vrd|d��}|��D]\}}||vr"q|d	kr*||7}|�|||||�qd
S)zy
        Parse a route and use rid as a key in order to isolate the route from
        others in the route dict.
        r%�Gateway�Destination�Metric)�gateway�network�metricr7�prefix�/r^N)r
r6)	r*r5�confrHr1�
route_cfg_mapr`r3r<rrr�parse_routes�s��zRenderer.parse_routesc	Cs�d}d}d}|�dg�D]�}|d}|dvr$|dkrd}n|dkr#d	}n|d
kr5|dkr/d}n|dkr5d	}d|vrR|drR|dD]}|�d|��||�|d
}qAd|vr�|d}	d|vrg|	d|d��7}	ddddd�}
|��D]O\}}|dkr�|�d|
||	�qr|dkr�|�dd|��|
||�t||	�r�t�d||	�|�dd|��dd	�|d
}qr|dvr�|�||
|d�|��qrq|�|d|�t	|�d�t
�r�d}
|dr�d	}
|�|d|
�|S) NrXr!r�subnetsrM>�dhcp�dhcp4�ipv4�ipv6�yes�dhcp6�routes�r��addressr`rar$rZ�DNS�Domains)ror]�dns_nameservers�
dns_searchr]r%�azGGateway %s is not contained within subnet %s, adding GatewayOnLink flag�
GatewayOnLink>rsrr� �DHCPz	accept-ra�IPv6AcceptRA)rFrdr
r4r6r	�LOG�debug�joinr�bool)r*rQrHrfr1r5r=�t�i�addr�subnet_cfg_mapr3r<r2rrr�
parse_subnets�sp�
��
��
�zRenderer.parse_subnetsc	Cs�dD]B}||vr	qt||���}z
t�|�}|rdnd}Wnty3|dkr1t�d|�d}Ynw|dkr;d}nd}|�|d	|�qdS)
N)�dhcp4domain�dhcp6domainrjrX�routezInvalid dhcp4domain value - %sr�r"r#�
UseDomains)�str�casefoldr�translate_bool�
ValueErrorry�warningr4)r*�drHr�ret�sectionrrr�dhcp_domains$
���zRenderer.dhcp_domain�nscCs�d}|�d�}|s|jdkr|j|jd�}n	|s|jdkrdS|�d�r0|�|dd�|d��|�d	�rC|�|d
d�|d	��dSdS)Nr!�dnsrn)�search�nameservers�r�rqrvr�rp)rF�version�dns_searchdomainsrrr4r{)r*rQrHr�r1r�rrr�	parse_dnss
�

�zRenderer.parse_dnsc	Cs�ddddd�}|dkr|�ddd	d
dd��d
|�d�|vrH|dd|��fvrJ|d
|�d�}|��D]\}}||vrG|�d|��|||�q3dSdSdS)Nzuse-dns�use-domainszuse-hostnamezuse-ntp)�UseDNSr��UseHostname�UseNTP�4z
send-hostname�hostnamezroute-metriczuse-mtuz
use-routes)�SendHostname�Hostname�RouteMetric�UseMTU�	UseRoutesrf�
-overridesrj�ipv�DHCPv)�updater
r4)	r*rH�devicerfr��dhcp_config_maps�dhcp_overridesr3r<rrr�parse_dhcp_overrides)s2���
���zRenderer.parse_dhcp_overrides�.networkcCsVd}t�d|�|�d|�|��}|�d�r|dd�}t�||�t�|||�dS)Nzsystemd-networkz Setting Networking Config for %sz10-cloud-init-r9���)ryrz�endswithr�
write_file�chownbyname)r*�linkrb�nwk_dir�ext�net_fn_owner�net_fnrrr�create_network_fileEs
zRenderer.create_network_file�
network_state�	templatesrc
Cs�|j}|rt�|�|}t�|�|�|�}|�di�}|�di�}|��D]\}}	|�||	|�q&|��D]
\}}	|j||	|dd�q6|��D]
\}}	|j||	|dd�qHdS)N�vlan_netdev�bond_netdevz.netdev)r�)	rEr�target_pathr�
ensure_dir�_render_content�popr
r�)
r*r�r��target�network_dirr^r�r�r3r<rrr�render_network_statePs

�zRenderer.render_network_statecCs^i}i}i}d|jvr|�|�}|d}|d}||d<d|jvr2|�|�}|d}|d}||d<|��D]�}	t�}
|	d}|�|�}|rM|
�dd	|�|	d
sc|�d�rc|d�|�}
|
rc|
|	d
<|�|�}|rq|
�dd|�|	d
s�|�d�r�|d�|�}
|
r�|
|	d
<|�|	|
�}|�|	|
�|�	|	|
�}|�
|	|
|�d
}|��D]}|�d|��||
�|d}q�|j
dk�r#|	d}|jd��D]\}}d|vr�|�d�|kr�|}nq�||jdv�r#|jd|}|�||
�dD]/}d|�d�|v�rd|�d|�d�i�v�r|�d|�d|�d�}t|��|�|
|||�q�|�||
��i�q6|S)N�vlansr��	vlan_link�bondsr��	bond_linkrKr!r'rP�
macaddressr(r�crnr��	ethernetszset-name)r��6rf�domainr�r�z has both dhcpzdomain and dhcpz*-overrides.use-domains configured. Use one)rG�render_vlans�render_bonds�iter_interfacesrrFr4rSrYr�r��iter_routesrdr�r
r��RuntimeErrorr�r�r?)r*r��ret_dictr�r��	vlan_dictr��	bond_dictr�rQrH�
iface_name�vlan_link_name�mac�bond_link_namer�rfr5r�rK�dev_name�dev_cfgr�r��	exceptionrrrr�is|







����zRenderer._render_contentcCsi}i}i|d<|j�di�}|��D]e\}}|�d�}|�d�}|dus)|dur0t�d|�q|||<t�}	|	�dd|�|	�ddd	�|�d
�}
|
rS|	�dd|
�|�d�}
|
rk|
��}
|	�dd|
�|
|d|<|	�d
d|�|	��||<q||d�}|S)Nr�r��idr�z)Skipping VLAN %s - missing 'id' or 'link'r&rI�Kind�vlanrTrUrOr'�Id)r�r�)	rGrFr
ryr�rr4�lowerr?)r*r��vlan_link_info�vlan_ndev_configsr��	vlan_name�vlan_cfg�vlan_id�parentrHr2r�rrrr��s<

�

�zRenderer.render_vlanscs�i}i}d}i|d<|j�di�}|��D�]>\�}|�d�}|s(t�d��q|��fdd�|D��t�}|�dd	��|�dd
d�|�d�}	|	rS|�dd
|	�|�d�}	|	rk|	��}	|�dd|	�|	|d�<|�di�}
d|
vr~|�|d|
d�d|
vr�|�|d|
d�d��d|
vr�|�|d|
d�d��d|
vr�|�|d|
d�d��d|
vr�|�|d|
d�d��d|
vr�|
d}t	|t
�r�|g}d�|�}|�|d|�d|
vr�|�|d|
d�d |
vr�|�|d!|
d �d"|
v�r|�|d#|
d"�d$|
v�r|�|d%|
d$�d&|
v�r|�|d'|
d&�d(|
v�r,|�|d)|
d(�d*|
v�r<|�|d+t
|
d*��d,|
v�rN|�|d-t
|
d,����|��|�<q||d.�}
|
S)/Nr(r�r��
interfacesz'Skipping bond %s - missing 'interfaces'csi|]}|��qSrr)�.0rQ��	bond_namerr�
<dictcomp>sz)Renderer.render_bonds.<locals>.<dictcomp>r&rIr��bondrTrUrO�
parameters�mode�Modezmii-monitor-interval�
MIIMonitorSec�ms�updelay�
UpDelaySec�	downdelay�DownDelaySeczarp-interval�ARPIntervalSecz
arp-ip-targetrv�ARPIPTargetszarp-validate�ARPValidatezarp-all-targets�
ARPAllTargetszprimary-reselect�PrimaryReselectPolicyz	lacp-rate�LACPTransmitRateztransmit-hash-policy�TransmitHashPolicyz	ad-select�AdSelectz	min-links�MinLinkszall-slaves-active�AllSlavesActive)r�r�)
rGrFr
ryr�r�rr4r�rr�r{r?)r*r��bond_link_info�bond_ndev_configsr�r��bond_cfgr�rHr2�params�targets�ip_listr�rr�rr��s�
�

����


�
�
�

�
�

�
��zRenderer.render_bonds�N)r�)NN)r@rArB�__doc__r+rrSrYrdr�r�r
r�r�r�rrr�r�r�r�rrrrrCxs.

B
���
�b*rCcCs2ddg}ddg}|D]}tj||d�sdSq
dS)N�ip�	systemctlz	/usr/sbinz/bin)r�FT)r�which)r��expectedr��prrr�	availablens�r	r)�logging�typingrrrr�	cloudinitrr�
cloudinit.netrr	�cloudinit.net.network_stater
�	getLoggerr@ryr�rrrrCr	rrrr�<module>s
*@y

https://t.me/RX1948 - 2025